/**
 * 剑指 Offer 64. 求1+2+…+n
 * https://leetcode-cn.com/problems/qiu-12n-lcof/
 */
public class Solutions_Offer_64 {
    public static void main(String[] args) {
        int n = 3;  // output: 6
//        int n = 9;  // output: 45

        int result = sumNums2(n);
        System.out.println(result);
    }

    public static int sumNums(int n) {
//        if (n == 1) {
//            return 1;
//        }
//        return n + sumNums(n - 1);

        // 运用逻辑运算符代替 if 语句
        // 短路逻辑与，符号前面的条件满足，则执行符号后面的表达式，否则不执行
        // 递归终止条件：n 小于等于 0
        boolean flag = n > 0 && (n += sumNums(n - 1)) > 0;
        return n;
    }

    // 高斯求和
    public static int sumNums2(int n) {
//        return ((1 + n) * n) / 2;
        return ((int)Math.pow(n, 2) + n) >> 1;
    }
}
